package orm

// context 包是Go 1.7 引入的标准库，
// 主要用于在goroutine 之间传递取消信号、超时时间、截止时间以及一些共享的值等。
import (
	"context"
)

// Querier 用于select
type Querier[T any] interface {
	// 用不用指针(*)都可以
	// 反射,aop之类的用指针方便点
	// 指针可能存在内存逃逸问题
	Get(ctx context.Context) (*T, error)
	GetMulti(ctx context.Context) ([]*T, error)
}

// Executor 用于 INSERT DELETE UPDATE
type Executor interface {
	//Exec(ctx context.Context) (sql.Result, error)
	Exec(ctx context.Context) Result
}

type QueryBuilder interface {
	Build() (*Query, error)
}

type Query struct {
	SQL  string
	Args []any
}
